package 第六章面向对象;

/*
 *   对象的创建和使用
 * 引用数据类型的默认值是null(空值)
 *
 *
 * 局部变量在栈内存当中存储
 * 成员变量的实例变量在堆内存中的java对象内部存储
 * 实例变量每一个对象时候单独的，互不干扰的
 * */
public class OOTese01 {
    public static void main(String[] args) {

        int i = 10;
        //通过一个类可以实例话N个对象
        //实例化对象的语法： new 类名();
        // new运算符的作用是创建对象，在JVM堆内存当中开辟新的内存空间
        //方法区内存:在类加载的时候,class字节码代码片段被加载到内存空间当中
        //栈内存(局部变量):方法片段执行的时候,会给该方法分配内存空间,在栈内存中进栈
        //堆内存():new的对象在堆内存中存储
        //对象是new运算符在堆内存中开辟的内存空间称为对象
        //引用是一个变量，只不过该局部变量存储的是另外一个java对象的内存地址
        //java语言中，程序员不能直接操作堆内存，只能通过"引用"去访问堆内存当中的对象内部的实例变量
        Students01 s = new Students01();
        //访问实例变量的语法格式：
        //读取数据：引用.变量名
        //修改数据：引用.变量名=值

        int stuNo = s.no;
        boolean stuSex = s.sex;
        String stuName = s.name;
        System.out.println("****************************************");

        System.out.println("学号是：" + s.no);
        s.no = 99;
        System.out.println("学号是：" + s.no);
        System.out.println(stuSex ? "男" : "女");
        s.addr = "南京";
        String stuAddr = s.addr;
        System.out.println(stuAddr);

        //编译报错，no这个实例变量不能直接采用"类名"的方式访问
        //no是实例变量，对象级别的变量，变量存储在java对象的内部，必须先有对象，通过对象才能访问no这个实例变量
        //  System.out.println(Students01.no);

    }
}
